<?php

/**
 * Класс RL_Mime -- определялка MIME для файлов 
 * 
 * @package RL
 * @author Lucky <lucky@jetstyle.ru> 
 * @version $Id: Mime.php 182 2007-10-09 11:56:22Z lucky $
 */
class RL_Mime
{

	public function __construct ($ctx)
	{
		$this->ctx = $ctx;
	} // end of __construct

	//!an accessor
	/**
	 * file венуть MIME тип файла по указанному пути
	 *
	 * Пытается использовать разные алгоритмы.. 
	 *
	 * TODO раскидать алгоритмы по классам, а сюда фабрику
	 * 
	 * @param mixed $filename путь к файлу (будет лучше, если файл действительно существует)
	 * @access public
	 * @return string MIME тип файла или че-каво
	 */
	public function file($filename)
	{
		// модно
		if (function_exists('finfo_open')) {
			$finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
			$ret = finfo_file($finfo, $filename);
			finfo_close($finfo);
			return $ret ? $ret : NULL; 
		}

		/* 2007-10-09 : lucky
		 * для *.css выдает text/plain . фтопку 
		// не модно
		if (function_exists('mime_content_type')) {
			$ret = mime_content_type($filename); // FIXME : lucky : 2007-07-31
			                                     // что оно возвращает, если не может опознать?
			return $ret ? $ret : NULL; 
		}
		 */

		// безвыходно
		return $this->getMime($filename);
	}

	//!a function
	/**
	 * getMime венуть MIME тип для данного файла
	 *
	 * Смотрит только на расширение файла
	 * 
	 * @param mixed $filename имя файла с расширением (можно путь)
	 * @access private
	 * @return string MIME тип файла если опознали файл или NULL -- если х.з. чё за файл
	 */
	private function getMime ($filename)
	{
		$fext = strtolower(substr($filename, strrpos($filename,'.') + 1));

		switch ($fext) {
		case 'css': 
			$res = 'text/css'; 
			break;
		case 'js': 
			$res = 'application/x-javascript';
			break;
		case 'htm': 			
		case 'html': 
			$res = 'text/html'; 
			break;
		case 'gif': 
			$res = 'image/gif'; 
			break;
		case 'jpeg': 
		case 'jpg': 
			$res = 'image/jpeg'; 
			break;
		case 'png': 
			$res = 'image/png'; 
			break;
		default:
			$res = NULL;
		}

		return $res;
	} // end of function getMime

}

?>
